import inspect

import pytest
from airtest.core.api import *


# 检查是否出现确认授权
from utils.case_dict import addcase


def checkagree(poco):
    if poco(text="确认授权").exists():
        poco(text="确认授权").click()
        sleep(3)


# 获取用例的名字，用以存放到dict中转化成中文名称
def get_func_name():
    return inspect.stack()[1][3]


# 通过应用名称，查询应用并进入
def search_app(poco, appname):
    poco(type="android.widget.TextView", text="请搜索您需要的事项或服务").click()
    # 输入 并 搜索
    text(appname, search=True)
    sleep(3)
    print(appname)
    poco(name="com.hanweb.android.sdzwfw.activity:id/tv_app_name", text=appname).click()
    sleep(3)
    if poco(text="尊敬的用户您好，您当前访问的服务正在进行系统升级，期间将无法提供服务，给您造成的不便，敬请谅解。").exists():
        poco(text="我知道了").click()
        sleep(2)
        # 取消 两次
        poco(text="取消").click()
        poco(text="取消").click()
        pytest.skip(appname + "挂维护中")


# 验证个人事项页面的公共方法，text1为第一个页面校验的元素，text2为第二个页面校验的元素
def shixiangcheck(poco, appname, swipestr, text1, text2):
    value = poco(textMatches=text1).wait(3).exists()
    assert value == True, appname + '-异常!'
    if value:
        if swipestr and len(swipestr) > 0:
            poco(textMatches=swipestr).swipe([-0.0101, -0.8266])
        poco(text="在线办理").click()
        checkagree(poco)
        value = poco(textMatches=text2).wait(10).exists()
        assert value == True, appname + '-填写信息页面-异常!'
        poco("com.hanweb.android.sdzwfw.activity:id/top_back_iv").click()
    poco("com.hanweb.android.sdzwfw.activity:id/top_back_iv").click()
    # 取消 两次
    poco(text="取消").click()
    poco(text="取消").click()
    sleep(2)

def gongantinggerenshixiangtest(poco, appstatus, appname):
    if not appstatus:
        pytest.xfail("登录不成功, 标记为xfail")
    addcase(get_func_name(), appname)
    sleep(2)
    search_app(poco, appname)
    sleep(10)
    checkagree(poco)
    shixiangcheck(poco, appname, None, '实施主体山东省公安厅', '.*37.*')
